package com.Lacia.emsserver.pojo;

/**
 * @author 万里花
 * @date 2024/6/6 9:48
 */
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.Instant;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BmsStackData {

    /** 时间戳 */
    @JsonFormat(shape = JsonFormat.Shape.NUMBER_INT)
    @JsonProperty("timestamp")
    private Instant timestamp;

    /** 电池堆运行状态 (0:停机，1:充电，2:放电，3:待机，4:故障) */
    private Integer arrStatus;

    /** 电池堆电压 */
    private Double arrVol;

    /** 电池堆电流 */
    private Double arrCur;

    /** 电池堆SOC */
    private Integer arrSOC;

    /** 电池堆SOH */
    private Integer arrSOH;

    /** 电池堆可充电量 */
    private Double arrRechaElec;

    /** 电池堆可放电量 */
    private Double arrRedischgElec;

    /** 电池堆充电量累加值 */
    private Double arrChaElecTotal;

    /** 电池堆放电量累加值 */
    private Double arrDischgElecTotal;

    /** 最高单体电压 */
    private Double cellMaxVol;

    /** 最低单体电压 */
    private Double cellMinVol;

    /** 最高电池温度 */
    private Integer cellMaxTem;

    /** 最低电池温度 */
    private Integer cellMinTem;



    /** 电池堆单次充电电量 */
    private Double arrLastRechaElec;

    /** 电池堆单次放电电量 */
    private Double arrLastRedischgElec;

    /** 电池堆当前允许最大充电功率 */
    private Double arrMaxReChaPower;

    /** 电池堆当前允许最大放电功率 */
    private Double arrMaxReDischgPower;

    /** 电池堆当前允许最大充电电流 */
    private Double arrMaxReChaCur;

    /** 电池堆当前允许最大放电电流 */
    private Double arrMaxRedischgCur;

    /** BMS状态 (0:正常，1:预警，2:告警，3:保护) */
    private Integer bmsStatus;

    /** 堆号 */
    private Integer arrNum;

    /** 组SOC最大 */
    private Integer cluMaxSoc;

    /** 组SOC最小 */
    private Integer cluMinSoc;

    /** 组电压最大 */
    private Double cluMaxVol;

    /** 组电压最小 */
    private Double cluMinVol;

    /** 单体平均电压 */
    private Double cellAveVol;

    /** 单体平均温度 */
    private Integer cellAveTem;

    /** 安装电池组数 */
    private Integer cluSums;

    /** 簇SOC最大簇号 */
    private Integer cluMaxSocNum;

    /** 簇SOC最小簇号 */
    private Integer cluMinSocNum;

    /** 簇电压最大簇号 */
    private Integer cluMaxVolNum;

    /** 簇电压最小簇号 */
    private Integer cluMinVolNum;

    /** 最高单体电压电池簇号 */
    private Integer cellMaxVolCluNum;

    /** 最高单体电压所在簇的簇内编号 */
    private Integer cellMaxVolNum;

    /** 最低单体电压电池簇号 */
    private Integer cellMinVolCluNum;

    /** 最低单体电压所在簇的簇内编号 */
    private Integer cellMinVolNum;

    /** 最高单体温度电池簇号 */
    private Integer cellMaxTemCluNum;

    /** 最高单体温度所在簇的簇内编号 */
    private Integer cellMaxTemNum;

    /** 最低单体温度电池簇号 */
    private Integer cellMinTemCluNum;

    /** 最低单体温度所在簇的簇内编号 */
    private Integer cellMinTemNum;

    // Getters and Setters
}

